/**
 * @file 距离格式化工具函数
 * @description 提供距离相关格式化工具函数
 * @date 2024-06-15
 */

/**
 * 格式化距离，自动选择合适的单位（米/公里）
 * @param distance 距离值（千米）
 * @param digits 小数位数
 * @returns 格式化后的距离
 */
export function formatDistance(distance: number, digits: number = 2): string {
  if (distance === undefined || distance === null || isNaN(distance)) {
    return '0米';
  }
  
  if (distance >= 1) {
    return `${distance.toFixed(digits)}公里`;
  } else {
    return `${(distance * 1000).toFixed(0)}米`;
  }
}

/**
 * 以指定的单位格式化距离
 * @param distance 距离值（千米）
 * @param unit 单位，'km'表示公里，'m'表示米
 * @param digits 小数位数
 * @returns 格式化后的距离
 */
export function formatDistanceWithUnit(
  distance: number, 
  unit: 'km' | 'm' = 'km', 
  digits: number = 2
): string {
  if (distance === undefined || distance === null || isNaN(distance)) {
    return unit === 'km' ? '0公里' : '0米';
  }
  
  if (unit === 'km') {
    return `${distance.toFixed(digits)}公里`;
  } else {
    return `${(distance * 1000).toFixed(0)}米`;
  }
}

/**
 * 格式化速度（米/秒）
 * @param speed 速度（米/秒）
 * @param decimal 小数位数，默认为1
 * @returns 格式化后的速度字符串
 */
export function formatSpeed(speed: number, decimal: number = 1): string {
  if (typeof speed !== 'number' || isNaN(speed)) return '0km/h';
  
  // 转换为千米/小时
  const kmh = speed * 3.6;
  return `${kmh.toFixed(decimal)}km/h`;
}

/**
 * 格式化坐标
 * @param coordinate 坐标值
 * @param type 坐标类型，'lng'为经度，'lat'为纬度
 * @returns 格式化后的坐标字符串
 */
export function formatCoordinate(coordinate: number, type: 'lng' | 'lat'): string {
  if (typeof coordinate !== 'number' || isNaN(coordinate)) return '';
  
  const fixedNum = 6; // 保留小数位数
  const value = coordinate.toFixed(fixedNum);
  
  return type === 'lng' ? `${value}°E` : `${value}°N`;
} 